Amazon Cognito user pools の削除保護を無効化しようとしたら InvalidSmsRoleTrustRelationshipException が発生する場合の対処
こんにちは、製造ビジネステクノロジー部の若槻です。
今回は、Amazon Cognito user pools(ユーザープール)に設定された削除保護(deletion protection)を無効化しようとしたら InvalidSmsRoleTrustRelationshipException
が発生したので対処してみた内容を共有します。
事象
AWS Management Console で Amazon Cognito user pools のを無効化しようとしたら、以下のエラーが発生しました。
削除保護が有効なユーザープールを AWS Management Console で開きます。
削除保護のメニューから Deactivate をクリックします。
ダイアログで無効化を行ってみます。
すると InvalidSmsRoleTrustRelationshipException
というエラーが表示されました。削除保護は無効化できていません。
Failed to delete user pool "<ユーザープール名>". Try again later.
Failed to deactivate deletion protection
code: InvalidSmsRoleTrustRelationshipException
message: Role does not have a trust relationship allowing Cognito to assume the role
View details から詳細を確認すると、こちらもで同様のエラーメッセージが確認できました。
原因、解決
原因は、SMS 送信に存在しない IAM ロールが設定されていたためでした。そこで、SMS 送信に使用する IAM ロールを設定し直すことで、削除保護を無効化することができました。
Messaging > SMS セクションで Edit をクリックします。
既存の IAM ロールが設定されていますね。
しかしこの IAM ロールは存在していないようです。
そこで Create a new IAM role で新しい IAM ロールを作成します。
指定した名前のサービスロールが作成され、設定されました。
再度、削除保護を無効化してみます。
今度は削除保護を無効化することができました。
おわりに
Amazon Cognito user pools(ユーザープール)に設定された削除保護(deletion protection)を無効化しようとしたら InvalidSmsRoleTrustRelationshipException
が発生したので対処してみた内容を共有しました。
自身の記憶ではユーザープールは削除保護を有効化する設定で CDK で作成していたのですが、その CDK スタックを削除した際に IAM ロールが削除されユーザープールだけ残ってしまったため、このようなエラーが発生したようです。若干バグっぽい動作ですね。
参考
以上